bitkeeper revision 1.1542.1.1 (42943a71LGhR_dI1LOX6lKtJ08zzTA)
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Wed, 25 May 2005 08:42:25 +0000 (08:42 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Wed, 25 May 2005 08:42:25 +0000 (08:42 +0000)
setup.py, Makefile:
  Remove XenSV -- it's been broken since twisted was removed.
Many files:
  Delete: tools/misc/xensv
  Delete: tools/python/xen/sv/params.py
  Delete: tools/python/xen/sv/__init__.py
  Delete: tools/python/xen/sv/MigrateDomain.py
  Delete: tools/python/xen/sv/Daemon.py
  Delete: tools/python/xen/sv/util.py
  Delete: tools/python/xen/sv/Wizard.py
  Delete: tools/python/xen/sv/TabView.py
  Delete: tools/python/xen/sv/SaveDomain.py
  Delete: tools/python/xen/sv/RestoreDomain.py
  Delete: tools/python/xen/sv/NodeInfo.py
  Delete: tools/python/xen/sv/Main.py
  Delete: tools/python/xen/sv/HTMLBase.py
  Delete: tools/python/xen/sv/GenTabbed.py
  Delete: tools/python/xen/sv/DomList.py
  Delete: tools/python/xen/sv/DomInfo.py
  Delete: tools/python/xen/sv/CreateDomain.py
  Delete: tools/sv/images/unpause.png
  Delete: tools/sv/images/small-unpause.png
  Delete: tools/sv/images/small-pause.png
  Delete: tools/sv/images/small-destroy.png
  Delete: tools/sv/images/shutdown.png
  Delete: tools/sv/images/seperator.jpg
  Delete: tools/sv/images/right-end-highlight.jpg
  Delete: tools/sv/images/reboot.png
  Delete: tools/sv/images/previous.png
  Delete: tools/sv/images/pause.png
  Delete: tools/sv/images/orb_02.jpg
  Delete: tools/sv/images/next.png
  Delete: tools/sv/images/middle-no-highlight.jpg
  Delete: tools/sv/images/middle-highlight.jpg
  Delete: tools/sv/images/left-end-no-highlight.jpg
  Delete: tools/sv/images/left-end-highlight.jpg
  Delete: tools/sv/images/finish.png
  Delete: tools/sv/images/destroy.png
  Delete: tools/sv/inc/style.css
  Delete: tools/sv/images/seperator-right-highlight.jpg
  Delete: tools/sv/images/seperator-left-highlight.jpg
  Delete: tools/sv/inc/script.js
  Delete: tools/sv/images/right-end-no-highlight.jpg
  Delete: tools/sv/images/orb_01.jpg
  Delete: tools/sv/Makefile
  Delete: tools/sv/Main.rpy
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
47 files changed:
.rootkeys
tools/misc/Makefile
tools/misc/xensv [deleted file]
tools/python/setup.py
tools/python/xen/sv/CreateDomain.py [deleted file]
tools/python/xen/sv/Daemon.py [deleted file]
tools/python/xen/sv/DomInfo.py [deleted file]
tools/python/xen/sv/DomList.py [deleted file]
tools/python/xen/sv/GenTabbed.py [deleted file]
tools/python/xen/sv/HTMLBase.py [deleted file]
tools/python/xen/sv/Main.py [deleted file]
tools/python/xen/sv/MigrateDomain.py [deleted file]
tools/python/xen/sv/NodeInfo.py [deleted file]
tools/python/xen/sv/RestoreDomain.py [deleted file]
tools/python/xen/sv/SaveDomain.py [deleted file]
tools/python/xen/sv/TabView.py [deleted file]
tools/python/xen/sv/Wizard.py [deleted file]
tools/python/xen/sv/__init__.py [deleted file]
tools/python/xen/sv/params.py [deleted file]
tools/python/xen/sv/util.py [deleted file]
tools/sv/Main.rpy [deleted file]
tools/sv/Makefile [deleted file]
tools/sv/images/destroy.png [deleted file]
tools/sv/images/finish.png [deleted file]
tools/sv/images/left-end-highlight.jpg [deleted file]
tools/sv/images/left-end-no-highlight.jpg [deleted file]
tools/sv/images/middle-highlight.jpg [deleted file]
tools/sv/images/middle-no-highlight.jpg [deleted file]
tools/sv/images/next.png [deleted file]
tools/sv/images/orb_01.jpg [deleted file]
tools/sv/images/orb_02.jpg [deleted file]
tools/sv/images/pause.png [deleted file]
tools/sv/images/previous.png [deleted file]
tools/sv/images/reboot.png [deleted file]
tools/sv/images/right-end-highlight.jpg [deleted file]
tools/sv/images/right-end-no-highlight.jpg [deleted file]
tools/sv/images/seperator-left-highlight.jpg [deleted file]
tools/sv/images/seperator-right-highlight.jpg [deleted file]
tools/sv/images/seperator.jpg [deleted file]
tools/sv/images/shutdown.png [deleted file]
tools/sv/images/small-destroy.png [deleted file]
tools/sv/images/small-pause.png [deleted file]
tools/sv/images/small-unpause.png [deleted file]
tools/sv/images/unpause.png [deleted file]
tools/sv/images/xen.png [deleted file]
tools/sv/inc/script.js [deleted file]
tools/sv/inc/style.css [deleted file]

index 1891b6afe9147bf94b337f40a14d8012425a3315..ac98ede4dba24224b73ba122a57e85ed4d125012 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
 405eedf6_nnNhFQ1I85lhCkLK6jFGA tools/misc/xencons
 40c9c4697z76HDfkCLdMhmaEwzFoNQ tools/misc/xend
 41adc641dV-0cDLSyzMs5BT8nL7v3Q tools/misc/xenperf.c
-4107986eMWVdBoz4tXYoOscpN_BCYg tools/misc/xensv
 4056f5155QYZdsk-1fLdjsZPFTnlhg tools/misc/xensymoops
 40cf2937dqM1jWW87O5OoOYND8leuA tools/misc/xm
 4270cc81g3nSNYCZ1ryCMDEbLtMtbQ tools/pygrub/Makefile
 3fbd0a42l40lM0IICw2jXbQBVZSdZg tools/python/xen/lowlevel/xc/xc.c
 40dc4076St6AmPTmQPrtQ6LGHPxGmw tools/python/xen/lowlevel/xu/__init__.py
 40dc4076CwBYRTUQDdbdU1L6KcLgSw tools/python/xen/lowlevel/xu/xu.c
-41052eb84_irpx0E9N_kqBp9eoin5g tools/python/xen/sv/CreateDomain.py
-4107986egkTAMIHW7n-i4ShvCGWpLQ tools/python/xen/sv/Daemon.py
-40fcefb2qm13BbRZBydAatOavaS0fQ tools/python/xen/sv/DomInfo.py
-40fcefb2-RIU8GB67mJMRzybME9bxw tools/python/xen/sv/DomList.py
-40fcefb23FfQn-ZBCbcHqA0cPGqQxw tools/python/xen/sv/GenTabbed.py
-40fcefb2QZAn3u3sX-M7NXBjOv5HGg tools/python/xen/sv/HTMLBase.py
-40fcefb2vnfDbl4w_yCTedROPuqs0g tools/python/xen/sv/Main.py
-4186e24fZMp7_bX4f50MvUscdrST9Q tools/python/xen/sv/MigrateDomain.py
-40fcefb24h-04WaHag-Tg4nxWPhTig tools/python/xen/sv/NodeInfo.py
-4186e24fb4YtJw155tNtSXXN6nEWqA tools/python/xen/sv/RestoreDomain.py
-4186e24fVXt0lfeQSAy1eiFKnPCHTg tools/python/xen/sv/SaveDomain.py
-40fcefb2Sif__6AqrANeBQZZfvP-6w tools/python/xen/sv/TabView.py
-41052eb8UrgtUkuJPg7oY1tutVQHsg tools/python/xen/sv/Wizard.py
-40fcefb2DqteqCCZYDCvvh4Q5jBd0w tools/python/xen/sv/__init__.py
-4107986e6qN1IdvIDdId0AYFmDMkiQ tools/python/xen/sv/params.py
-40fcefb4rnaZNjqsBu7A5V2rlLyqRw tools/python/xen/sv/util.py
 40d8915cyoVA0hJxiBFNymL7YvDaRg tools/python/xen/util/Brctl.py
 40dfd40aGqGkiopOOgJxSF4iCbHM0Q tools/python/xen/util/__init__.py
 4270e4efFg3wHCCxXpA0h6yoMTkeSQ tools/python/xen/util/blkif.py
 40cf2937PSslwBliN1g7ofDy2H_RhA tools/python/xen/xm/opts.py
 40cf2937Z8WCNOnO2FcWdubvEAF9QQ tools/python/xen/xm/shutdown.py
 41b88ba6_C4---jeA895Efg9YFZgKA tools/python/xen/xm/sysrq.py
-40fcefb2K1xqVVT4D-p7nL2GzS4scg tools/sv/Main.rpy
-40ffbcb66Dj5F-1kCK9BcgSqCWkt1w tools/sv/Makefile
-4120b0e5L_nW-u0MWRfIdXg4ng4OjA tools/sv/images/destroy.png
-4107c921_OR9NTSv2dKFiLCXxrXoxA tools/sv/images/finish.png
-40fcefb3wXQMsl9WkgQAVtdrupm4sw tools/sv/images/left-end-highlight.jpg
-40fcefb3K6ESt5sQhD9aCQRscQIlXQ tools/sv/images/left-end-no-highlight.jpg
-40fcefb3BUT98zPzW8kAFKuxGdh4XA tools/sv/images/middle-highlight.jpg
-40fcefb38OTgsUKHBpwshLLIsiIaCA tools/sv/images/middle-no-highlight.jpg
-41052eb9SDUqSLGtG6rxk6Ep5fOhFA tools/sv/images/next.png
-40fcefb32SPtrw36c4S6YGFlLvkKuw tools/sv/images/orb_01.jpg
-40fcefb3Ok5qkX3iM7ZEPVkRInrUpg tools/sv/images/orb_02.jpg
-4104ffca9_GhWOxRE-83uZIad2Z1gg tools/sv/images/pause.png
-41052eb9NQqHe_f9-ev1CaA3y5YYZg tools/sv/images/previous.png
-41013a82ILk71xLqWFH5ZO5VmOIvBw tools/sv/images/reboot.png
-40fcefb3JnT5XeKTuVF4yUMGOtuNZg tools/sv/images/right-end-highlight.jpg
-40fcefb3-DuYOS7noo2W7b_0p7TOUg tools/sv/images/right-end-no-highlight.jpg
-40fcefb3qNbAZR5FYGPAZ9sFPVMTDA tools/sv/images/seperator-left-highlight.jpg
-40fcefb3dgsa24WLk_BJeYQHrDLuOg tools/sv/images/seperator-right-highlight.jpg
-40fcefb3FtiX4Pd2kT8wDlp8u8xRhQ tools/sv/images/seperator.jpg
-41013a82sUdUqBv8EoAUJii3gsZ-4g tools/sv/images/shutdown.png
-4120b0e5RyNoIQNMjUs4A2kshovjaQ tools/sv/images/small-destroy.png
-4120b0e6vW66wW6WvjQyFD0AZH2tng tools/sv/images/small-pause.png
-4120b0e6USof7ieyGxEvtCdTMpxaQw tools/sv/images/small-unpause.png
-4104ffca-jPHLVOrW0n0VghEXXtKxg tools/sv/images/unpause.png
-40fcefb3yMSrZvApO9ToIi-iQwnchA tools/sv/images/xen.png
-41013a83z27rKvWIxAfUBMVZ1eDCDg tools/sv/inc/script.js
-40fcefb3zGC9XNBkSwTEobCoq8YClA tools/sv/inc/style.css
 422f27c8MDeRoOWZNdcRC5VDTcj3TQ tools/tests/Makefile
 422f27c81CCtXt4Lthf7JF3Ajr0fUA tools/tests/test_x86_emulator.c
 420b963dK3yGNtqxRM8npGZtrCQd1g tools/vnet/00INSTALL
index 5281e94e006831e59cef6aa6daf8093e9fa4a46a..5eebbfda127906db20b776cceb1aa7354cab51cb 100644 (file)
@@ -16,7 +16,7 @@ HDRS     = $(wildcard *.h)
 TARGETS  = xenperf xc_shadow
 
 INSTALL_BIN  = $(TARGETS) xencons
-INSTALL_SBIN = netfix xm xend xensv xenperf
+INSTALL_SBIN = netfix xm xend xenperf
 
 all: build
 build: $(TARGETS)
diff --git a/tools/misc/xensv b/tools/misc/xensv
deleted file mode 100755 (executable)
index 339ed66..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-#!/usr/bin/env python
-#  -*- mode: python; -*-
-#============================================================================
-# Copyright (C) 2004 Tom Wilkie <tw275@cl.cam.ac.uk>
-# Copyright (C) 2004 Mike Wray  <mike.wray@hp.com>
-#============================================================================
-
-"""SV web interface Lives in /usr/sbin.
-   Provides pretty HTML management interface.
-
-   Run:
-
-   sv start
-
-   The daemon is stopped with:
-
-   sv stop
-   
-   The daemon will be accessible from http://localhost:8080/
-"""
-import os
-import sys
-import re
-
-# add fallback path for non-native python path installs if needed
-sys.path.append('/usr/lib/python')
-sys.path.append('/usr/lib64/python')
-from xen.xend.server.params import XEND_PID_FILE
-
-class CheckError(ValueError):
-    pass
-
-def hline():
-    print >>sys.stderr, "*" * 70
-
-def msg(message):
-    print >>sys.stderr, "*" * 3, message
-
-def check_logging():
-    """Check python logging is installed and raise an error if not.
-    Logging is standard from Python 2.3 on.
-    """
-    try:
-        import logging
-    except ImportError:
-        hline()
-        msg("Python logging is not installed.")
-        msg("Use 'make install-logging' at the xen root to install.")
-        msg("")
-        msg("Alternatively download and install from")
-        msg("http://www.red-dove.com/python_logging.html")
-        hline()
-        raise CheckError("logging is not installed")
-
-def check_twisted_version():
-    """Check twisted is installed with a supported version and print a warning if not.
-    Raises an error if twisted is not installed.
-    """
-    # Supported twisted release and major version.
-    RELEASE = 1
-    MAJOR   = 3
-    try:
-        from twisted.copyright import version
-    except ImportError:
-        hline()
-        msg("The Twisted framework is not installed.")
-        msg("Use 'make install-twisted' at the xen root to install.")
-        msg("")
-        msg("Alternatively download and install version %d.%d or higher" % (RELEASE, MAJOR))
-        msg("from http://www.twistedmatrix.com/products")
-        hline()
-        raise CheckError("twisted is not installed")
-        
-    
-    (release, major, minor) = version.split('.')
-    release = int(release)
-    major = int(major)
-    if release > RELEASE: return
-    if release == RELEASE and major >= MAJOR: return
-    hline()
-    msg("Warning: Twisted version not supported: %s" % version)
-    msg("Use Twisted version %d.%d.0 or higher" % (RELEASE, MAJOR))
-    hline()
-    
-def check_xend():
-    """Check xend is running
-    """
-    
-    if not os.path.isfile(XEND_PID_FILE) or not os.path.getsize(XEND_PID_FILE):
-       hline()
-        msg( "Warning: Xend has not been detected as running." )
-        msg( "Please start it immediately with: xend start " )
-        hline()
-        return 0
-        
-    # Read the pid of the previous invocation and search active process list.
-    pid = open(XEND_PID_FILE, 'r').read()
-    lines = os.popen('ps ' + pid + ' 2>/dev/null').readlines()
-    for line in lines:
-        if re.search('^ *' + pid + '.+xend', line):
-            return 1
-
-    hline()
-    msg( "Warning: Xend has not been detected as running." )
-    msg( "Please start it immediately with: xend start " )
-    hline() 
-    return 0
-    
-def main():
-    try:
-        check_logging()
-        check_twisted_version()
-        check_xend()
-    except CheckError:
-        sys.exit(1)
-    
-    from xen.sv import Daemon
-
-    daemon = Daemon.instance()
-    
-    if not sys.argv[1:]:
-        print 'usage: %s {start|stop|restart}' % sys.argv[0]
-    elif os.fork():
-        pid, status = os.wait()
-        return status >> 8
-    elif sys.argv[1] == 'start':
-        return daemon.start()
-    elif sys.argv[1] == 'stop':
-        return daemon.stop()
-    elif sys.argv[1] == 'restart':
-        return daemon.stop() or daemon.start()
-    else:
-        print 'not an option:', sys.argv[1]
-    return 1
-
-if __name__ == '__main__':
-    sys.exit(main())
index 76861908a6ee5c828990c9b3ea239b3cdea4d604..e6b04f870861f0581ae9525e361fe6ea0b4db146 100644 (file)
@@ -39,7 +39,6 @@ setup(name            = 'xen',
                          'xen.util',
                          'xen.xend',
                          'xen.xend.server',
-                         'xen.sv',
                          'xen.xm',
                          'xen.web',
                          ],
diff --git a/tools/python/xen/sv/CreateDomain.py b/tools/python/xen/sv/CreateDomain.py
deleted file mode 100644 (file)
index 4378897..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-from xen.sv.Wizard import *
-from xen.sv.util import *
-from xen.sv.GenTabbed import PreTab
-
-from xen.xm.create import make_config, OptVals
-
-from xen.xend.XendClient import server
-
-class CreateDomain( Wizard ):
-    def __init__( self, urlWriter ):
-       
-       sheets = [ CreatePage0,
-                  CreatePage1,
-                  CreatePage2,
-                   CreatePage3,
-                   CreatePage4,
-                   CreateFinish ]
-    
-       Wizard.__init__( self, urlWriter, "Create Domain", sheets )
-       
-class CreatePage0( Sheet ):
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "General", 0 )
-        self.addControl( InputControl( 'name', 'VM Name', 'VM Name:', "[\\w|\\S]+", "You must enter a name in this field" ) )
-        self.addControl( InputControl( 'memory', '64', 'Memory (Mb):', "[\\d]+", "You must enter a number in this field" ) )
-        self.addControl( InputControl( 'cpu', '0', 'CPU:', "[\\d]+", "You must enter a number in this feild" ) )
-        self.addControl( InputControl( 'cpu_weight', '1', 'CPU Weight:', "[\\d]+", "You must enter a number in this feild" ) )
-                        
-class CreatePage1( Sheet ):
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Setup Kernel Image", 1 )
-# For now we don't need to select a builder...
-#        self.addControl( ListControl( 'builder', [('linux', 'Linux'), ('netbsd', 'NetBSD')], 'Kernel Type:' ) )
-        self.addControl( FileControl( 'kernel', '/boot/vmlinuz-2.6.9-xenU', 'Kernel Image:' ) )
-        self.addControl( InputControl( 'extra', '', 'Kernel Command Line Parameters:' ) )
-
-class CreatePage2( Sheet ):
-
-    def __init__( self, urlWriter ):
-       Sheet.__init__( self, urlWriter, "Setup Virtual Block Device", 2 )
-        self.addControl( InputControl( 'num_vbds', '1', 'Number of VBDs:', '[\\d]+', "You must enter a number in this field" ) )
-
-class CreatePage3( Sheet ):
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Setup Virtual Block Device", 3 )
-        
-    def write_BODY( self, request, err ):
-        if not self.passback: self.parseForm( request )
-    
-       previous_values = sxp2hash( string2sxp( self.passback ) ) #get the hash for quick reference
-        
-        num_vbds = previous_values.get( 'num_vbds' )
-        
-        for i in range( int( num_vbds ) ):
-            self.addControl( InputControl( 'vbd%s_dom0' % i, 'phy:sda%s' % str(i + 1), 'Device %s name:' % i  ) )
-            self.addControl( InputControl( 'vbd%s_domU' % i, 'sda%s' % str(i + 1), 'Virtualized device %s:' % i ) )
-            self.addControl( ListControl( 'vbd%s_mode' % i, [('w', 'Read + Write'), ('r', 'Read Only')], 'Device %s mode:' % i ) )
-            
-        self.addControl( InputControl( 'root', '/dev/sda1', 'Root device (in VM):' ) )
-        
-        Sheet.write_BODY( self, request, err )
-                
-class CreatePage4( Sheet ):
-
-    def __init__( self, urlWriter ):        
-        Sheet.__init__( self, urlWriter, "Network settings", 4 )
-        self.addControl( ListControl( 'dhcp', [('off', 'No'), ('dhcp', 'Yes')], 'Use DHCP:' ) )
-        self.addControl( InputControl( 'hostname', 'hostname', 'VM Hostname:' ) )
-        self.addControl( InputControl( 'ip_addr', '1.2.3.4', 'VM IP Address:' ) )
-        self.addControl( InputControl( 'ip_subnet', '255.255.255.0', 'VM Subnet Mask:' ) ) 
-        self.addControl( InputControl( 'ip_gateway', '1.2.3.4', 'VM Gateway:' ) )           
-        self.addControl( InputControl( 'ip_nfs', '1.2.3.4', 'NFS Server:' ) )  
-                 
-class CreateFinish( Sheet ):
-
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "All Done", 5 )
-        
-    def write_BODY( self, request, err ):
-    
-        if not self.passback: self.parseForm( request )
-        
-        xend_sxp = self.translate_sxp( string2sxp( self.passback ) )
-        
-        try:
-            dom_sxp = server.xend_domain_create( xend_sxp )
-            success = "Your domain was successfully created.\n"
-        except:
-            success = "There was an error creating your domain.\nThe configuration used is as follows:\n"
-            dom_sxp = xend_sxp
-            
-            
-        
-        pt = PreTab( success + sxp2prettystring( dom_sxp ) )
-        pt.write_BODY( request )
-
-        request.write( "<input type='hidden' name='passback' value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % self.location )
-    
-    def translate_sxp( self, fin_sxp ):
-       fin_hash = ssxp2hash( fin_sxp )
-    
-        def get( key ):
-            ret = fin_hash.get( key )
-            if ret:
-                return ret
-            else:
-                return ""
-        
-       vals = OptVals()
-        
-        vals.name =    get( 'name' )
-        vals.memory =  get( 'memory' )
-        vals.maxmem =   get( 'maxmem' )
-        vals.cpu =     get( 'cpu' )
-        vals.cpu_weight = get( 'cpu_weight' )
-        
-        vals.builder =  get( 'builder' )       
-        vals.kernel =   get( 'kernel' )
-       vals.root =     get( 'root' )
-        vals.extra =   get( 'extra' )
-        
-        #setup vbds
-        
-        vbds = []
-        
-        for i in range( int( get( 'num_vbds' ) ) ):
-            vbds.append( ( get( 'vbd%s_dom0' % i ), get('vbd%s_domU' % i ), get( 'vbd%s_mode' % i ) ) )
-        
-        vals.disk = vbds    
-            
-        #misc
-        
-        vals.pci = []
-        
-        vals.blkif = None
-        vals.netif = None
-        vals.restart = None
-        vals.console = None
-        vals.ramdisk = None
-        
-        #setup vifs
-        
-        vals.vif = []
-        vals.nics = 1
-                
-        ip =   get( 'ip_addr' )
-        nfs =  get( 'ip_nfs' )
-        gate = get( 'ip_gateway' )
-        mask = get( 'ip_subnet' )
-        host = get( 'hostname' )
-        dhcp = get( 'dhcp' )
-        
-        vals.cmdline_ip = "%s:%s:%s:%s:%s:eth0:%s" % (ip, nfs, gate, mask, host, dhcp)
-        
-        try:
-            return make_config( vals )
-        except:
-            return [["Error creating domain config."]]    
-        
diff --git a/tools/python/xen/sv/Daemon.py b/tools/python/xen/sv/Daemon.py
deleted file mode 100644 (file)
index 510cfa9..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-###########################################################
-## XenSV Web Control Interface Daemon
-## Copyright (C) 2004, K A Fraser (University of Cambridge)
-## Copyright (C) 2004, Mike Wray <mike.wray@hp.com>
-## Copyright (C) 2004, Tom Wilkie <tw275@cam.ac.uk>
-###########################################################
-
-import os
-import os.path
-import sys
-import re
-
-from xen.sv.params import *
-
-from twisted.internet import reactor
-from twisted.web import static, server, script
-
-class Daemon:
-    """The xend daemon.
-    """
-    def __init__(self):
-        self.shutdown = 0
-        self.traceon = 0
-
-    def daemon_pids(self):
-        pids = []
-        pidex = '(?P<pid>\d+)'
-        pythonex = '(?P<python>\S*python\S*)'
-        cmdex = '(?P<cmd>.*)'
-        procre = re.compile('^\s*' + pidex + '\s*' + pythonex + '\s*' + cmdex + '$')
-        xendre = re.compile('^/usr/sbin/xend\s*(start|restart)\s*.*$')
-        procs = os.popen('ps -e -o pid,args 2>/dev/null')
-        for proc in procs:
-            pm = procre.match(proc)
-            if not pm: continue
-            xm = xendre.match(pm.group('cmd'))
-            if not xm: continue
-            #print 'pid=', pm.group('pid'), 'cmd=', pm.group('cmd')
-            pids.append(int(pm.group('pid')))
-        return pids
-
-    def new_cleanup(self, kill=0):
-        err = 0
-        pids = self.daemon_pids()
-        if kill:
-            for pid in pids:
-                print "Killing daemon pid=%d" % pid
-                os.kill(pid, signal.SIGHUP)
-        elif pids:
-            err = 1
-            print "Daemon already running: ", pids
-        return err
-            
-    def cleanup(self, kill=False):
-        # No cleanup to do if PID_FILE is empty.
-        if not os.path.isfile(PID_FILE) or not os.path.getsize(PID_FILE):
-            return 0
-        # Read the pid of the previous invocation and search active process list.
-        pid = open(PID_FILE, 'r').read()
-        lines = os.popen('ps ' + pid + ' 2>/dev/null').readlines()
-        for line in lines:
-            if re.search('^ *' + pid + '.+xensv', line):
-                if not kill:
-                    print "Daemon is already running (pid %d)" % int(pid)
-                    return 1
-                # Old daemon is still active: terminate it.
-                os.kill(int(pid), 1)
-        # Delete the stale PID_FILE.
-        os.remove(PID_FILE)
-        return 0
-
-    def start(self, trace=0):
-        if self.cleanup(kill=False):
-            return 1
-   
-        # Fork -- parent writes PID_FILE and exits.
-        pid = os.fork()
-        if pid:
-            # Parent
-            pidfile = open(PID_FILE, 'w')
-            pidfile.write(str(pid))
-            pidfile.close()
-            return 0
-        # Child
-        self.run()
-        return 0
-
-    def stop(self):
-        return self.cleanup(kill=True)
-
-    def run(self):
-       root = static.File( SV_ROOT )
-        root.indexNames = [ 'Main.rpy' ]
-        root.processors = { '.rpy': script.ResourceScript }
-        reactor.listenTCP( SV_PORT, server.Site( root ) )
-        reactor.run()
-
-    def exit(self):
-        reactor.disconnectAll()
-        sys.exit(0)
-
-def instance():
-    global inst
-    try:
-        inst
-    except:
-        inst = Daemon()
-    return inst
diff --git a/tools/python/xen/sv/DomInfo.py b/tools/python/xen/sv/DomInfo.py
deleted file mode 100755 (executable)
index 8aabb19..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-from xen.xend.XendClient import getAsynchServer
-server = getAsynchServer()
-from xen.xend import PrettyPrint
-
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.util import *
-from xen.sv.GenTabbed import *
-
-DEBUG=1
-
-class DomInfo( GenTabbed ):
-
-    def __init__( self, urlWriter ):
-        
-        self.dom = 0;
-    
-        def tabUrlWriter( tab ):
-            return urlWriter( "&dom=%s%s" % ( self.dom, tab ) )
-        
-        GenTabbed.__init__( self, "Domain Info", tabUrlWriter, [ 'General', 'SXP', 'Devices' ], [ DomGeneralTab, DomSXPTab, NullTab ]  )
-
-    def write_BODY( self, request ):
-        dom = request.args.get('dom')
-        
-        if dom is None or len(dom) != 1:
-            request.write( "<p>Please Select a Domain</p>" )
-            return None
-        else:
-            self.dom = dom[0]
-        
-        GenTabbed.write_BODY( self, request )
-        
-    def write_MENU( self, request ):
-        pass
-
-class DomGeneralTab( CompositeTab ):
-    def __init__( self ):
-       CompositeTab.__init__( self, [ DomGenTab, DomActionTab ] )        
-        
-class DomGenTab( GeneralTab ):
-
-    def __init__( self ):
-    
-        titles = {}
-    
-        titles[ 'ID' ] = 'dom'      
-        titles[ 'Name' ] = 'name'
-        titles[ 'CPU' ] = 'cpu'
-        titles[ 'Memory' ] = ( 'mem', memoryFormatter )
-        titles[ 'State' ] = ( 'state', stateFormatter )
-        titles[ 'Total CPU' ] = ( 'cpu_time', smallTimeFormatter )
-        titles[ 'Up Time' ] = ( 'up_time', bigTimeFormatter )
-    
-        GeneralTab.__init__( self, {}, titles )
-        
-    def write_BODY( self, request ):
-    
-        self.dom = getVar('dom', request)
-        
-        if self.dom is None:
-            request.write( "<p>Please Select a Domain</p>" )
-            return None
-            
-        self.dict = getDomInfoHash( self.dom )
-        
-        GeneralTab.write_BODY( self, request )
-            
-class DomSXPTab( PreTab ):
-
-    def __init__( self ):
-        self.dom = 0
-        PreTab.__init__( self, "" )
-
-
-    def write_BODY( self, request ):
-        self.dom = getVar('dom', request)
-        
-        if self.dom is None:
-            request.write( "<p>Please Select a Domain</p>" )
-            return None
-
-        try:
-            domInfo = server.xend_domain( self.dom )
-        except:
-            domInfo = [["Error getting domain details."]]
-            
-        self.source = sxp2prettystring( domInfo )
-        
-        PreTab.write_BODY( self, request )
-        
-class DomActionTab( ActionTab ):
-
-    def __init__( self ):
-       actions = { "shutdown" : ( "Shutdown the Domain", "shutdown.png" ),
-                   "reboot" : ( "Reboot the Domain", "reboot.png" ),
-                    "pause" : ( "Pause the Domain", "pause.png" ),
-                    "unpause" : ( "Unpause the Domain", "unpause.png" ),
-                    "destroy" : ( "Destroy the Domain", "destroy.png" ) }
-        ActionTab.__init__( self, actions )    
-        
-    def op_shutdown( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-          if DEBUG: print ">DomShutDown %s" % dom
-           try:
-               server.xend_domain_shutdown( int( dom ), "halt" )
-           except:
-               pass
-    
-    def op_reboot( self, request ):
-               dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-           if DEBUG: print ">DomReboot %s" % dom
-            try:
-               server.xend_domain_shutdown( int( dom ), "reboot" )
-            except:
-               pass
-                
-    def op_pause( self, request ):
-               dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-           if DEBUG: print ">DomPause %s" % dom
-            try:
-                server.xend_domain_pause( int( dom ) )
-            except:
-               pass
-               
-    def op_unpause( self, request ):
-               dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-          if DEBUG: print ">DomUnpause %s" % dom
-           try:
-               server.xend_domain_unpause( int( dom ) )
-          except:
-               pass
-               
-    def op_destroy( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != '0':
-          if DEBUG: print ">DomDestroy %s" % dom
-           try:
-               server.xend_domain_destroy( int( dom ), "halt" )
-           except:
-               pass
-        
-    
-    
-        
-
diff --git a/tools/python/xen/sv/DomList.py b/tools/python/xen/sv/DomList.py
deleted file mode 100755 (executable)
index 86976b7..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-from xen.xend.XendClient import server
-from xen.xend import sxp
-
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.util import *
-
-class DomList( HTMLBase ):
-    
-    isLeaf = True
-
-    def __init__( self, urlWriter ):
-        HTMLBase.__init__(self)
-        self.urlWriter = urlWriter
-        
-    def write_MENU( self, request ):
-       return self.write_BODY( request, head=True, long=False ) 
-
-    def write_BODY( self, request, head=True, long=True ):
-        
-       domains = None
-    
-       try:
-               domains = server.xend_domains()
-               domains.sort()
-       except:
-               pass
-                
-        request.write( "\n<table style='border:0px solid white' cellspacing='0' cellpadding='0' border='0' width='100%'>\n" )
-        
-        if head:
-            request.write( "<tr class='domainInfoHead'>" )
-            self.write_DOMAIN_HEAD( request, long )
-            request.write( "</tr>" )
-        
-        odd = True
-        
-        if not domains is None:
-            for domain in domains:
-                if odd:
-                    request.write( "<tr class='domainInfoOdd'>\n" )
-                    odd = False
-                else:
-                    request.write( "<tr class='domainInfoEven'>\n" )
-                    odd = True
-                self.write_DOMAIN( request, getDomInfoHash( domain ), long )
-                request.write( "</tr>\n" )
-        else:
-               request.write( "<tr colspan='10'><p class='small'>Error getting domain list<br/>Perhaps XenD not running?</p></tr>")
-                
-        request.write( "</table>\n" )
-            
-    def write_DOMAIN( self, request, domInfoHash, long=True ):   
-        request.write( "<td class='domainInfo' align='center'>%(id)s</td>\n" % domInfoHash )
-
-        url = self.urlWriter( "&mod=info&dom=%(id)s" % domInfoHash )
-
-        request.write( "<td class='domainInfo' align='center'><a href='%s'>%s</a></td>\n" % ( url, domInfoHash['name'] ) )
-        if long: 
-            request.write( "<td class='domainInfo' align='center'>%(memory)5s</td>\n" % domInfoHash )
-            request.write( "<td class='domainInfo' align='center'>%(cpu)2s</td>\n" % domInfoHash )
-        request.write( "<td class='domainInfo' align='center'>%(state)5s</td>\n" % domInfoHash )
-        if domInfoHash[ 'id' ] != "0":
-            request.write( "<td class='domainInfo' align='center'>" )
-            
-            if domInfoHash[ 'state' ][ 2 ] == "-":
-                request.write( "<img src='images/small-pause.png' onclick='doOp2( \"pause\", \"%(dom)-4s\" )'>" % domInfoHash )
-            else:
-                request.write( "<img src='images/small-unpause.png' onclick='doOp2( \"unpause\", \"%(dom)-4s\" )'>" % domInfoHash )              
-            
-            request.write( "<img src='images/small-destroy.png' onclick='doOp2( \"destroy\", \"%(dom)-4s\" )'></td>" % domInfoHash)
-        else:
-            request.write( "<td>&nbsp;</td>" )
-
-    def write_DOMAIN_HEAD( self, request, long=True ):
-        request.write( "<td class='domainInfoHead' align='center'>Domain</td>\n" )      
-        request.write( "<td class='domainInfoHead' align='center'>Name</td>\n" )      
-        if long:
-            request.write( "<td class='domainInfoHead' align='center'>Memory / Mb</td>\n" )      
-            request.write( "<td class='domainInfoHead' align='center'>CPU</td>\n" )      
-        request.write( "<td class='domainInfoHead' align='center'>State</td>\n" )      
-        request.write( "<td class='domainInfoHead' align='center'></td>\n" )
diff --git a/tools/python/xen/sv/GenTabbed.py b/tools/python/xen/sv/GenTabbed.py
deleted file mode 100755 (executable)
index aef1848..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-import types
-
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.TabView import TabView
-from xen.sv.util import getVar
-
-class GenTabbed( HTMLBase ):
-
-    def __init__( self, title, urlWriter, tabStrings, tabObjects ):
-        HTMLBase.__init__(self)
-        self.tabStrings = tabStrings
-        self.tabObjects = tabObjects
-        self.urlWriter = urlWriter
-        self.title = title
-
-    def write_BODY( self, request, urlWriter = None ):
-    
-        tab = int( getVar( 'tab', request, 0 ) )
-            
-        request.write( "<table style='' width='100%' border='0' cellspacing='0' cellpadding='0'>" )
-        request.write( "<tr><td>" )
-        
-        request.write( "<p align='center'><u>%s</u></p>" % self.title )
-        
-        TabView( tab, self.tabStrings, self.urlWriter ).write_BODY( request )
-        
-        request.write( "</td></tr><tr><td>" )
-        
-        render_tab = self.tabObjects[ tab ]
-                
-        if render_tab is None:
-            request.write( "<p>Bad Tab</p>" )
-            self.finish_BODY( request )
-        else:
-            render_tab().write_BODY( request )
-
-        request.write( "</td></tr></table>" )
-       
-    def perform( self, request ):
-        tab = int( getVar( 'tab', request, 0 ) )
-            
-        op_tab = self.tabObjects[ tab ]
-        
-        if op_tab:
-            op_tab().perform( request )
-        
-class PreTab( HTMLBase ):
-
-    def __init__( self, source ):
-        HTMLBase.__init__( self )
-        self.source = source
-    
-    def write_BODY( self, request ):
-        
-        request.write( "<div style='display: block; overflow: auto; border: 0px solid black; width: 540px; padding: 5px; z-index:0; align: center'><pre>" )
-        
-        request.write( self.source )
-        
-        request.write( "</pre></div>" )
-
-class GeneralTab( HTMLBase ):
-                        
-    def __init__( self, dict, titles ):
-        HTMLBase.__init__( self )
-        self.dict = dict
-        self.titles = titles
-                        
-    def write_BODY( self, request ): 
-        
-        request.write( "<table width='100%' cellspacing='0' cellpadding='0' border='0'>" )
-        
-        def writeAttr( niceName, attr, formatter=None ):
-            if type( attr ) is types.TupleType:
-                ( attr, formatter ) = attr
-            
-            if attr in self.dict:
-                if formatter:
-                    temp = formatter( self.dict[ attr ] )
-                else:
-                    temp = str( self.dict[ attr ] )
-                request.write( "<tr><td width='50%%'><p>%s:</p></td><td width='50%%'><p>%s</p></td></tr>" % ( niceName, temp ) )
-        
-        for niceName, attr in self.titles.items():
-            writeAttr( niceName, attr )
-                            
-        request.write( "</table>" )
-
-class NullTab( HTMLBase ):
-    
-    def __init__( self ):
-        HTMLBase.__init__( self )
-        self.title = "Null Tab"
-        
-    def write_BODY( self, request ):
-        request.write( "<p>%s</p>" % self.title )
-
-class ActionTab( HTMLBase ):
-
-    def __init__( self, actions ):
-        self.actions = actions
-        HTMLBase.__init__( self )
-        
-    def write_BODY( self, request ):
-        request.write("<p align='center'>")
-         
-        for ( command, ( text, image ) ) in self.actions.items():
-            request.write("<img src='images/%s' width='54' height='54' onclick='doOp( \"%s\" )' onmouseover='update( \"button_desc\", \"%s\" )' " % ( image, command, text ) )
-            request.write("onmouseout='update( \"button_desc\", \"&nbsp;\" )' style='button'>")
-            request.write("&nbsp;&nbsp;")
-    
-        request.write("<p align='center'><span id='button_desc'>&nbsp;</span></p>")   
-        request.write("</p>")        
-        
-class CompositeTab( HTMLBase ):
-
-    def __init__( self, tabs ):
-       HTMLBase.__init__( self )
-        self.tabs = tabs
-        
-    def write_BODY( self, request ):
-       for tab in self.tabs:
-            request.write( "<br/>" )
-            tab().write_BODY( request )
-            
-    def perform( self, request ):
-       for tab in self.tabs:
-            tab().perform( request )
-    
-    
-       
-        
diff --git a/tools/python/xen/sv/HTMLBase.py b/tools/python/xen/sv/HTMLBase.py
deleted file mode 100755 (executable)
index e67784d..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-from twisted.web.resource import Resource
-from xen.sv.util import *
-
-class HTMLBase( Resource ):
-
-    isLeaf = True
-    def __init__( self ):
-        Resource.__init__(self)
-
-    def render_POST( self, request ):
-        self.perform( request )
-        return self.render_GET( request )
-        
-    def render_GET( self, request ):
-        self.write_TOP( request )
-        self.write_BODY( request )
-        self.write_BOTTOM( request )
-        return ''
-                
-    def write_BODY( self, request ):
-        request.write( "BODY" )
-        
-    def write_TOP( self, request ):
-        request.write( '<html><head><title>Xen</title><link rel="stylesheet" type="text/css" href="inc/style.css" />' )
-        request.write( '<script src="inc/script.js"></script>' )
-        request.write( '</head><body>' )
-        request.write('<form method="post" action="%s">' % request.uri)
-
-    def write_BOTTOM( self, request ):
-        request.write('<input type="hidden" name="op" value="">')
-        request.write('<input type="hidden" name="args" value="">')
-        request.write('</form>')
-        request.write( "</body></html>" )
-
-    def get_op_method(self, op):
-        """Get the method for an operation.
-        For operation 'foo' looks for 'op_foo'.
-
-        op     operation name
-        returns method or None
-        """
-        op_method_name = 'op_' + op
-        return getattr(self, op_method_name, None)
-        
-    def perform(self, req):
-        """General operation handler for posted operations.
-        For operation 'foo' looks for a method op_foo and calls
-        it with op_foo(req). Replies with code 500 if op_foo
-        is not found.
-
-        The method must return a list when req.use_sxp is true
-        and an HTML string otherwise (or list).
-        Methods may also return a Deferred (for incomplete processing).
-
-        req    request
-        """
-        op = req.args.get('op')
-        if not op is None and len(op) == 1:
-            op = op[0]
-            op_method = self.get_op_method(op)
-            if op_method:
-                op_method( req )   
diff --git a/tools/python/xen/sv/Main.py b/tools/python/xen/sv/Main.py
deleted file mode 100755 (executable)
index 196e1c1..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-from xen.sv.HTMLBase import HTMLBase
-from xen.sv.DomList  import DomList
-from xen.sv.NodeInfo import NodeInfo
-from xen.sv.DomInfo  import DomInfo
-from xen.sv.CreateDomain import CreateDomain
-from xen.sv.MigrateDomain import MigrateDomain
-from xen.sv.SaveDomain import SaveDomain
-from xen.sv.RestoreDomain import RestoreDomain
-
-from xen.xend.XendClient import server
-
-from xen.sv.util import getVar
-
-class Main( HTMLBase ):
-    
-    isLeaf = True
-
-    def __init__( self, urlWriter = None ):
-        self.modules = { "node": NodeInfo, 
-                         "list": DomList, 
-                         "info": DomInfo,
-                         "create": CreateDomain,
-                         "migrate" : MigrateDomain,
-                         "save" : SaveDomain,
-                         "restore" : RestoreDomain }
-
-        # ordered list of module menus to display
-        self.module_menus = [ "node", "create", "migrate", "save",
-                              "restore", "list" ]
-        HTMLBase.__init__(self)
-        
-    def render_POST( self, request ):
-    
-       #decide what module post'd the action
-                
-       args = getVar( 'args', request )
-
-        mod = getVar( 'mod', request )
-                
-        if not mod is None and args is None:
-            module = self.modules[ mod ]
-            #check module exists
-            if module:
-               module( self.mainUrlWriter ).perform( request )
-        else:
-            self.perform( request )     
-    
-        return self.render_GET( request )
-
-    def mainUrlWriter( self, module ):
-       def fun( f ):
-            return "Main.rpy?mod=%s%s" % ( module, f )
-        return fun    
-        
-    def write_BODY( self, request ):
-    
-        request.write( "\n<table style='border:0px solid black; background: url(images/orb_01.jpg) no-repeat' cellspacing='0' cellpadding='0' border='0' width='780px' height='536px'>\n" )
-        request.write( "<tr>\n" )
-        request.write( " <td width='15px'>&nbsp;</td>" )
-        request.write( " <td width='175px' align='center' valign'center'>" )
-        request.write( "  <table cellspacing='0' cellpadding='0' border='0' width='100%' height='100%'>" )
-        request.write( "   <tr><td height='140px' align='center' valign='bottom'><a href='http://www.cl.cam.ac.uk/Research/SRG/netos/xen/'>" )
-        request.write( "   <img src='images/xen.png' width='150' height='75' border='0'/></a><br/></td></tr>" )
-        request.write( "   <tr><td height='60px' align='center'><p class='small'>SV Web Interface<br/>(C) <a href='mailto:tw275@cam.ac.uk'>Tom Wilkie</a> 2004</p></td></tr>")
-        request.write( "   <tr><td align='center' valign='top'>" )
-
-        for modName in self.module_menus:
-            self.modules[modName]( self.mainUrlWriter( modName ) ).write_MENU( request )
-        
-        request.write( "   </td></tr>" )
-        request.write( "  </table>" )
-        request.write( " &nbsp;" )
-        request.write( " </td>\n" )
-        request.write( " <td width='15px'>&nbsp;</td>" )
-        request.write( " <td width='558px' align='left' valign='top'>" )
-        request.write( "  <table cellspacing='0' cellpadding='0' border='0' width='100%' height='100%'>" )
-        request.write( "   <tr><td height='20px'></td></tr>" )
-        request.write( "   <tr><td align='center' valign='top'>" )
-        
-        modName = getVar('mod', request)
-        
-        if modName is None:
-            request.write( '<p>Please select a module</p>' )
-        else:
-            module = self.modules[ modName ]
-            if module:
-               module( self.mainUrlWriter( modName ) ).write_BODY( request )  
-            else:
-               request.write( '<p>Invalid module. Please select another</p>' )
-    
-        request.write( "   </td></tr>" )
-        request.write( "  </table>" )
-        request.write( " </td>\n" )
-        request.write( " <td width='17px'>&nbsp;</td>" )
-        request.write( "</tr>\n" )
-        
-        request.write( "</table>\n" )
-        
-                
-    def op_destroy( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != "0":
-            server.xend_domain_destroy( int( dom ), "halt" ) 
-                 
-    def op_pause( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != "0":
-            server.xend_domain_pause( int( dom ) )      
-    
-    def op_unpause( self, request ):
-       dom = getVar( 'dom', request )
-        if not dom is None and dom != "0":
-            server.xend_domain_unpause( int( dom ) )      
diff --git a/tools/python/xen/sv/MigrateDomain.py b/tools/python/xen/sv/MigrateDomain.py
deleted file mode 100644 (file)
index 928acf3..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-from xen.sv.Wizard import *
-from xen.sv.util import *
-from xen.sv.GenTabbed import PreTab
-
-from xen.xm.create import make_config, OptVals
-
-from xen.xend.XendClient import server
-
-class MigrateDomain( Wizard ):
-    def __init__( self, urlWriter ):
-
-        sheets = [ ChooseMigrateDomain,
-                   DoMigrate ]
-
-        Wizard.__init__( self, urlWriter, "Migrate Domain", sheets )
-
-
-class ChooseMigrateDomain( Sheet ):
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Configure Migration", 0)
-        try:
-            domains = server.xend_domains()
-            domains.sort()
-        except:
-            pass
-
-        domnames = []
-        for i in domains:
-            if i != 'Domain-0': domnames.append((i,i))
-        
-        self.addControl( ListControl('domid',
-                                     domnames,
-                                     'Domain ID:') )
-        self.addControl( TickControl('live',
-                                     'True',
-                                     'Live migrate:') )
-        self.addControl( InputControl('rate',
-                                      '0',
-                                      'Rate limit:') )
-        self.addControl( InputControl( 'dest', 'myhost.mydomain',
-                                       'Name or IP address:',
-                                       ".*") )
-
-class DoMigrate( Sheet ):
-    def __init__(self, urlWriter ):
-        Sheet.__init__(self, urlWriter, "Migration Done", 1)
-
-    def write_BODY( self, request, err ):
-
-        if not self.passback: self.parseForm( request )
-
-#        print string2sxp(self.passback)
-        
-        config = ssxp2hash ( string2sxp( self.passback ) )
-      
-        try:
-            print config
-            print config['domid'], config['dest']
-            dom_sxp = server.xend_domain_migrate( config['domid'],
-                                                  config['dest'],
-                                                  config.get('live') == 'True',
-                                                  config['rate'] )
-            success = "Your domain was successfully Migrated.\n"
-        except Exception, e:
-            success = "There was an error migrating your domain\n"
-            dom_sxp = str(e)
-        
-        pt = PreTab( success + dom_sxp ) # sxp2prettystring( dom_sxp ) )
-        pt.write_BODY( request )
-
-        request.write( "<input type='hidden' name='passback' value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % self.location )
diff --git a/tools/python/xen/sv/NodeInfo.py b/tools/python/xen/sv/NodeInfo.py
deleted file mode 100755 (executable)
index 5db1a34..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-from xen.xend.XendClient import server
-
-from xen.sv.util import *
-from xen.sv.GenTabbed import *
-
-class NodeInfo( GenTabbed ):
-
-    def __init__( self, urlWriter ):
-    
-        GenTabbed.__init__( self, "Node Details", urlWriter, [ 'General', 'Dmesg', ], [ NodeGeneralTab, NodeDmesgTab ] )
-    
-    def write_MENU( self, request ):
-        request.write( "<p class='small'><a href='%s'>Node details</a></p>" % self.urlWriter( '' ) )
-
-class NodeGeneralTab( CompositeTab ):
-    def __init__( self ):
-       CompositeTab.__init__( self, [ NodeInfoTab, NodeActionTab ] )        
-        
-class NodeInfoTab( GeneralTab ):
-                        
-    def __init__( self ):
-         
-       nodeInfo = {}
-        try:
-            nodeInfo = sxp2hash( server.xend_node() )
-       except:
-            nodeInfo[ 'system' ] = 'Error getting node info'
-             
-        dictTitles = {}
-        dictTitles[ 'System' ] = 'system'
-        dictTitles[ 'Hostname' ] = 'host' 
-        dictTitles[ 'Release' ] = 'release' 
-        dictTitles[ 'Version' ] ='version' 
-        dictTitles[ 'Machine' ] = 'machine' 
-        dictTitles[ 'Cores' ] = 'cores' 
-        dictTitles[ 'Hyperthreading' ] = ( 'hyperthreads_per_core', hyperthreadFormatter )
-        dictTitles[ 'CPU Speed' ] = ( 'cpu_mhz', cpuFormatter )
-        dictTitles[ 'Memory' ] = ( 'memory', memoryFormatter )
-        dictTitles[ 'Free Memory' ] = ( 'free_memory', memoryFormatter )
-        
-        GeneralTab.__init__( self, dict=nodeInfo, titles=dictTitles )
-
-class NodeDmesgTab( PreTab ):
-
-    def __init__( self ):
-       try:
-            dmesg = server.xend_node_get_dmesg()
-        except:
-            dmesg = "Error getting node information: XenD not running?"
-        PreTab.__init__( self, dmesg )
-  
-class NodeActionTab( ActionTab ):
-
-    def __init__( self ):
-        ActionTab.__init__( self, { "shutdown" : ( "Shutdown the Node", "shutdown.png" ),
-               "reboot" : ( "Reboot the Node", "reboot.png" ) } )    
-        
-    def op_shutdown( self, request ):
-       print ">NodeShutDown"
-       server.xend_node_shutdown()
-    
-    def op_reboot( self, request ):
-       print ">NodeReboot"
-        server.xend_node_reboot()
diff --git a/tools/python/xen/sv/RestoreDomain.py b/tools/python/xen/sv/RestoreDomain.py
deleted file mode 100644 (file)
index be8b4f5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-from xen.sv.Wizard import *
-from xen.sv.util import *
-from xen.sv.GenTabbed import PreTab
-
-from xen.xm.create import make_config, OptVals
-
-from xen.xend.XendClient import server
-
-class RestoreDomain( Wizard ):
-    def __init__( self, urlWriter ):
-
-        sheets = [ ChooseRestoreDomain,
-                   DoRestore ]
-
-        Wizard.__init__( self, urlWriter, "Restore Domain", sheets )
-
-
-class ChooseRestoreDomain( Sheet ):
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Configure Restore", 0)
-        
-        self.addControl( InputControl( 'file', '',
-                                       'Suspend file name:',
-                                       ".*") )
-
-class DoRestore( Sheet ):
-    def __init__(self, urlWriter ):
-        Sheet.__init__(self, urlWriter, "Restore Done", 1)
-
-    def write_BODY( self, request, err ):
-
-        if not self.passback: self.parseForm( request )
-        config = ssxp2hash ( string2sxp( self.passback ) )
-      
-        try:
-            dom_sxp = server.xend_domain_restore( config['file'] )
-            success = "Your domain was successfully restored.\n"
-        except Exception, e:
-            success = "There was an error restoring your domain\n"
-            dom_sxp = str(e)
-        
-        pt = PreTab( success + sxp2prettystring( dom_sxp ) )
-        pt.write_BODY( request )
-
-        request.write( "<input type='hidden' name='passback' value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % self.location )
diff --git a/tools/python/xen/sv/SaveDomain.py b/tools/python/xen/sv/SaveDomain.py
deleted file mode 100644 (file)
index 4c4e315..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-from xen.sv.Wizard import *
-from xen.sv.util import *
-from xen.sv.GenTabbed import PreTab
-
-from xen.xm.create import make_config, OptVals
-
-from xen.xend.XendClient import server
-
-class SaveDomain( Wizard ):
-    def __init__( self, urlWriter ):
-
-        sheets = [ ChooseSaveDomain,
-                   DoSave ]
-
-        Wizard.__init__( self, urlWriter, "Save Domain", sheets )
-
-
-class ChooseSaveDomain( Sheet ):
-    def __init__( self, urlWriter ):
-        Sheet.__init__( self, urlWriter, "Configure Save", 0)
-        try:
-            domains = server.xend_domains()
-            domains.sort()
-        except:
-            pass
-
-        domnames = []
-        for i in domains:
-            if i != 'Domain-0': domnames.append((i,i))
-        
-        self.addControl( ListControl('domid',
-                                     domnames,
-                                     'Domain ID:') )
-        self.addControl( InputControl( 'file', '',
-                                       'Suspend file name:',
-                                       ".*") )
-
-class DoSave( Sheet ):
-    def __init__(self, urlWriter ):
-        Sheet.__init__(self, urlWriter, "Save Done", 1)
-
-    def write_BODY( self, request, err ):
-
-        if not self.passback: self.parseForm( request )
-        config = ssxp2hash ( string2sxp( self.passback ) )
-      
-        try:
-            dom_sxp = server.xend_domain_save( config['domid'],
-                                                  config['file'] )
-            success = "Your domain was successfully saved.\n"
-        except Exception, e:
-            success = "There was an error saving your domain\n"
-            dom_sxp = str(e)
-        
-        pt = PreTab( success + dom_sxp ) # sxp2prettystring( dom_sxp ) )
-        pt.write_BODY( request )
-
-        request.write( "<input type='hidden' name='passback' value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % self.location )
diff --git a/tools/python/xen/sv/TabView.py b/tools/python/xen/sv/TabView.py
deleted file mode 100755 (executable)
index cada51c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-from xen.sv.HTMLBase import HTMLBase
-
-class TabView( HTMLBase ):
-
-    def __init__( self, tab, tabs, urlWriter ):
-        HTMLBase.__init__(self)
-        self.tab = tab # interger - tab id
-        self.tabs = tabs
-        self.urlWriter = urlWriter
-
-    def write_BODY( self, request ):
-        request.write( "<table style='' border='0' cellspacing='0' cellpadding='0' align='center'>" )
-        request.write( "<tr height='22'>" )
-        
-        if self.tab == 0:
-            image = "left-end-highlight.jpg"
-        else:
-            image = "left-end-no-highlight.jpg"
-            
-        request.write( "<td height='22' width='14'><image src='images/%s' width='14' height='22'></td>" % image )  
-                  
-        count = len( self.tabs )
-
-        for i in range( count ):
-        
-            if i == self.tab:
-                image = "middle-highlight.jpg" 
-            else:
-                image = "middle-no-highlight.jpg"
-            
-            request.write( "<td style='background: url(images/%s)'><p align='center'><a href='%s'>%s</a></p></td>" % ( image, self.urlWriter( "&tab=%s" % i ), self.tabs[ i ] ) )
-
-            if i < count-1:
-                if i == self.tab:
-                    image = "seperator-left-highlight.jpg"
-                elif self.tab == i+1:
-                    image = "seperator-right-highlight.jpg"                 
-                else:
-                    image = "seperator.jpg"
-                    
-                request.write( "<td height='22' width='23'><image src='images/%s' width='23' height='22'></td>" % image )
-                    
-        if self.tab == count - 1:
-            image = "right-end-highlight.jpg"
-        else:
-            image = "right-end-no-highlight.jpg"
-        
-        request.write( "<td height='22' width='14'><image src='images/%s' width='14' height='22'></td>" % image )  
-        request.write( "</tr></table>" )
diff --git a/tools/python/xen/sv/Wizard.py b/tools/python/xen/sv/Wizard.py
deleted file mode 100755 (executable)
index 089d3f2..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-from xen.sv.util import *
-from xen.sv.HTMLBase import HTMLBase
-from xen.xend import sxp
-
-import re
-
-DEBUG = 0
-
-class Wizard( HTMLBase ):
-
-    def __init__( self, urlWriter, title, sheets ):
-        HTMLBase.__init__( self )
-        self.title = title
-        self.sheets = sheets
-        self.urlWriter = urlWriter
-        
-    def write_MENU( self, request ):
-       request.write( "<p class='small'><a href='%s'>%s</a></p>" % (self.urlWriter( '' ), self.title) ) 
-    
-    def write_BODY( self, request ):
-        
-       request.write( "<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td>" )
-        request.write( "<p align='center'><u>%s</u></p></td></tr><tr><td>" % self.title )
-        
-        currSheet = getVar( 'sheet', request )
-    
-        if not currSheet is None:
-            currSheet = int( currSheet )
-        else:
-            currSheet = 0
-            
-        sheet = self.sheets[ currSheet ]( self.urlWriter )
-        
-        err = not sheet.validate( request )
-        
-        if not err:    
-            op = getVar( 'op', request )
-        
-            if op == 'next':
-               currSheet += 1
-            elif op == 'prev':
-               currSheet -= 1
-             
-            sheet = self.sheets[ currSheet ]( self.urlWriter )
-        
-        if getVar( 'visited-sheet%s' % currSheet, request ):
-            sheet.write_BODY( request, err )
-        else:
-            sheet.write_BODY( request, False )
-
-        
-        request.write( "</td></tr><tr><td><table width='100%' border='0' cellspacing='0' cellpadding='0'><tr>" )
-        request.write( "<td width='80%'></td><td width='20%' align='center'><p align='center'>" )
-       if currSheet > 0:
-                   request.write( "<img src='images/previous.png' onclick='doOp( \"prev\" )' onmouseover='update( \"wizText\", \"Previous\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'>&nbsp;" )
-        if currSheet < ( len( self.sheets ) - 2 ):        
-            request.write( "<img src='images/next.png' onclick='doOp( \"next\" )' onmouseover='update( \"wizText\", \"Next\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'>" )
-        elif currSheet == ( len( self.sheets ) - 2 ):
-            request.write( "<img src='images/finish.png' onclick='doOp( \"next\" )' onmouseover='update( \"wizText\", \"Finish\" )' onmouseout='update( \"wizText\", \"&nbsp;\" )'>" )
-        request.write( "</p><p align='center'><span id='wizText'></span></p></td></tr></table>" )
-        request.write( "</td></tr></table>" )
-        
-    def op_next( self, request ):
-       pass
-        
-    def op_prev( self, request ):
-       pass
-        
-    def op_finish( self, request ):
-       pass  
-        
-class Sheet( HTMLBase ):
-
-    def __init__( self, urlWriter, title, location ):
-        HTMLBase.__init__( self )
-        self.urlWriter = urlWriter
-        self.feilds = []
-        self.title = title
-        self.location = location
-        self.passback = None
-        
-    def parseForm( self, request ):
-       do_not_parse = [ 'mod', 'op', 'sheet', 'passback' ] 
-    
-       passed_back = request.args
-        
-        temp_passback = passed_back.get( "passback" )
-        
-        if temp_passback is not None and len( temp_passback ) > 0:
-            temp_passback = temp_passback[ len( temp_passback )-1 ]
-        else:
-            temp_passback = "( )"        
-        
-        last_passback = ssxp2hash( string2sxp( temp_passback ) ) #use special function - will work with no head on sxp
-        
-        if DEBUG: print last_passback
-        
-        for (key, value) in passed_back.items():
-            if key not in do_not_parse:
-                last_passback[ key ] = value[ len( value ) - 1 ]
-                
-        self.passback = sxp2string( hash2sxp( last_passback ) ) #store the sxp
-        
-        if DEBUG: print self.passback
-        
-    def write_BODY( self, request, err ):
-    
-       if not self.passback: self.parseForm( request )
-        
-       request.write( "<p>%s</p>" % self.title )
-    
-       previous_values = ssxp2hash( string2sxp( self.passback ) ) #get the hash for quick reference
-        
-        request.write( "<table width='100%' cellpadding='0' cellspacing='1' border='0'>" )
-        
-       for (feild, control) in self.feilds:
-            control.write_Control( request, previous_values.get( feild ) )
-            if err and not control.validate( previous_values.get( feild ) ):
-               control.write_Help( request )
-            
-        request.write( "</table>" )
-            
-        request.write( "<input type='hidden' name='passback' value=\"%s\"></p>" % self.passback )
-        request.write( "<input type='hidden' name='sheet' value='%s'></p>" % self.location )
-        request.write( "<input type='hidden' name='visited-sheet%s' value='True'></p>" % self.location )
-                
-    def addControl( self, control ):
-       self.feilds.append( [ control.getName(), control ] )
-        
-    def validate( self, request ):
-    
-        if not self.passback: self.parseForm( request )
-            
-       check = True
-        
-        previous_values = ssxp2hash( string2sxp( self.passback ) ) #get the hash for quick reference
-       if DEBUG: print previous_values
-      
-       for (feild, control) in self.feilds:
-            if not control.validate( previous_values.get( feild ) ):
-                check = False
-                if DEBUG: print "> %s = %s" % (feild, previous_values.get( feild ))
-
-        return check
-        
-class SheetControl( HTMLBase ):
-
-    def __init__( self, reg_exp = ".*" ):
-        HTMLBase.__init__( self )
-        self.name = ""
-        self.reg_exp = reg_exp 
-        
-    def write_Control( self, request, persistedValue ):
-        request.write( "<tr colspan='2'><td>%s</td></tr>" % persistedValue )
-        
-    def write_Help( self, request ):
-        request.write( "<tr><td align='right' colspan='2'><p class='small'>Text must match pattern:" )
-        request.write( " %s</p></td></tr>" % self.reg_exp )
-        
-    def validate( self, persistedValue ):
-       if persistedValue is None:
-            persistedValue = ""
-            
-        return not re.compile( self.reg_exp ).match( persistedValue ) is None
-
-    def getName( self ):
-       return self.name
-        
-    def setName( self, name ):
-       self.name = name
-        
-class InputControl( SheetControl ):
-
-    def __init__( self, name, defaultValue, humanText,  reg_exp = ".*", help_text = "You must enter the appropriate details in this feild." ):
-        SheetControl.__init__( self, reg_exp )
-        self.setName( name )
-        
-        self.defaultValue = defaultValue
-        self.humanText = humanText
-        self.help_text = help_text
-        
-    def write_Control( self, request, persistedValue ):
-       if persistedValue is None:
-            persistedValue = self.defaultValue
-        
-        request.write( "<tr><td width='50%%'><p>%s</p></td><td width='50%%'><input size='40'type='text' name='%s' value=\"%s\"></td></tr>" % (self.humanText, self.getName(), persistedValue) )
-
-    def write_Help( self, request ):
-        request.write( "<tr><td align='right' colspan='2'><p class='small'>" )
-        request.write( " %s</p></td></tr>" % self.help_text )         
-        
-class TextControl( SheetControl ):
-
-    def __init__( self, text ):
-       SheetControl.__init__( self )
-        self.text = text
-        
-    def write_Control( self, request, persistedValue ):
-       request.write( "<tr><td colspan='2'><p>%s</p></td></tr>" % self.text )
-
-class SmallTextControl( SheetControl ):
-
-    def __init__( self, text ):
-       SheetControl.__init__( self )
-        self.text = text
-        
-    def write_Control( self, request, persistedValue ):
-       request.write( "<tr><td colspan='2'><p class='small'>%s</p></tr></td>" % self.text )
-        
-class ListControl( SheetControl ):
-
-    def __init__( self, name, options, humanText ):
-       SheetControl.__init__( self )
-        self.setName( name )
-        self.options = options
-        self.humanText = humanText
-        
-    def write_Control( self, request, persistedValue ):
-        request.write( "<tr><td width='50%%'><p>%s</p></td><td width='50%%'>" % self.humanText )
-       request.write( "<select name='%s'>" % self.getName() )
-        for (value, text) in self.options:
-            if value == persistedValue:
-               request.write( "<option value='%s' selected>%s\n" % (value, text) )
-            else:
-                request.write( "<option value='%s'>%s\n" % (value, text) )
-        request.write( "</select></td></tr>" )
-
-    def validate( self, persistedValue ):
-        for (value, text) in self.options:
-            if value == persistedValue:
-                return True
-                
-        return False
-        
-class FileControl( InputControl ):
-
-    def __init__( self, name, defaultValue, humanText,  reg_exp = ".*", help_text = "You must enter the appropriate details in this feild." ):
-       InputControl.__init__( self, name, defaultValue, humanText )
-        
-    def validate( self, persistedValue ):
-        if persistedValue is None: return False
-        try:
-            open( persistedValue )
-            return True
-        except IOError, TypeError:
-            return False
-    
-    def write_Help( self, request ):
-        request.write( "<tr><td colspan='2' align='right'><p class='small'>File does not exist: you must enter a valid, absolute file path.</p></td></tr>" )
-
-class TickControl( SheetControl ):
-
-    def __init__( self, name, defaultValue, humanText ):
-        SheetControl.__init__( self )
-        self.setName( name )
-        self.defaultValue = defaultValue
-        self.humanText = humanText
-        
-    def write_Control( self, request, persistedValue ):
-        request.write( "<tr><td width='50%%'><p>%s</p></td><td width='50%%'>" % self.humanText )
-        
-        if persistedValue == 'True':
-           request.write( "<input type='checkbox' name='%s' value='True' checked>" % self.getName() )
-        else:
-           request.write( "<input type='checkbox' name='%s' value='True'>" % self.getName() )
-            
-        request.write( "</select></td></tr>" )
-
-      
diff --git a/tools/python/xen/sv/__init__.py b/tools/python/xen/sv/__init__.py
deleted file mode 100755 (executable)
index 8d1c8b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
diff --git a/tools/python/xen/sv/params.py b/tools/python/xen/sv/params.py
deleted file mode 100644 (file)
index beed647..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-SV_PORT = 8080
-SV_ROOT = "/var/lib/xen/sv/"
-PID_FILE = "/var/run/xen-sv.pid"
diff --git a/tools/python/xen/sv/util.py b/tools/python/xen/sv/util.py
deleted file mode 100755 (executable)
index 3207b8f..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-from xen.xend.XendClient import server
-from xen.xend import sxp
-from xen.xend import PrettyPrint
-
-import types
-
-def getDomInfoHash( domain ):
-    domInfoHash = {}
-    try:
-        domInfoHash = sxp2hash( server.xend_domain( domain ) )
-        domInfoHash['dom'] = domain
-    except:
-       domInfoHash['name'] = "Error getting domain details"
-    return domInfoHash
-
-def sxp2hash( s ):
-    sxphash = {}
-        
-    for child in sxp.children( s ):
-       if isinstance( child, types.ListType ) and len( child ) > 1:
-            if isinstance( child[1], types.ListType ) and len( child ) > 1:
-                sxphash[ child[0] ] = sxp2hash( child[1] )
-            else:
-                sxphash[ child[0] ] = child[1]
-        
-    return sxphash  
-    
-def ssxp2hash( s ):
-    sxphash = {}
-    
-    for i in s:
-       if isinstance( i, types.ListType ) and len( i ) > 1:
-          sxphash[ i[0] ] = i[1]
-    
-    return sxphash 
-    
-def hash2sxp( h ):
-    hashsxp = []
-    
-    for (key, item) in h.items():
-       hashsxp.append( [key, item] )
-        
-    return hashsxp    
-    
-def string2sxp( string ):
-    pin = sxp.Parser()
-    pin.input( string )
-    return pin.get_val()    
-
-def sxp2string( sexp ):
-    return sxp.to_string( sexp )    
-    
-def sxp2prettystring( sxp ):
-    class tmp:
-        def __init__( self ):
-                self.str = ""
-        def write( self, str ):
-                self.str = self.str + str
-    temp = tmp()
-    PrettyPrint.prettyprint( sxp, out=temp )
-    return temp.str
-
-def getVar( var, request, default=None ):
-   
-    arg = request.args.get( var )
-
-    if arg is None:
-        return default
-    else:
-        return arg[ len( arg )-1 ]
-
-def bigTimeFormatter( time ):
-    time = float( time )
-    weeks = time // 604800
-    remainder = time % 604800
-    days = remainder // 86400
-    
-    remainder = remainder % 86400
-
-    hms = smallTimeFormatter( remainder )
-    
-    return "%d weeks, %d days, %s" % ( weeks, days, hms )
-
-def smallTimeFormatter( time ):
-    time = float( time )
-    hours = time // 3600
-    remainder = time % 3600
-    mins = remainder // 60
-    secs = time % 60
-    return "%02d:%02d:%04.1f (hh:mm:ss.s)" % ( hours, mins, secs ) 
-
-def stateFormatter( state ):
-    states = [ 'Running', 'Blocked', 'Paused', 'Shutdown', 'Crashed' ]
-    
-    stateStr = ""
-    
-    for i in range( len( state ) ):
-        if state[i] != "-":
-            stateStr += "%s, " % states[ i ] 
-           
-    return stateStr + " (%s)" % state
-
-def memoryFormatter( mem ):
-    mem = int( mem )
-    if mem >= 1024:
-        mem = float( mem ) / 1024
-        return "%3.2fGb" % mem
-    else:    
-        return "%7dMb" % mem
-
-def cpuFormatter( mhz ):
-    mhz = int( mhz )
-    if mhz > 1000:
-        ghz = float( mhz ) / 1000.0
-        return "%4.2fGHz" % ghz
-    else:
-        return "%4dMHz" % mhz
-        
-def hyperthreadFormatter( threads ):
-    if int( threads ) > 1:
-        return "Yes (%d)" % threads
-    else:
-        return "No"
diff --git a/tools/sv/Main.rpy b/tools/sv/Main.rpy
deleted file mode 100755 (executable)
index 6b75ea9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-from xen.sv.Main import Main
-
-resource = Main()
diff --git a/tools/sv/Makefile b/tools/sv/Makefile
deleted file mode 100755 (executable)
index 4da91e0..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-sv_insdir := /var/lib/xen/sv
-INSTALL                = install
-INSTALL_DIR    = $(INSTALL) -d -m0755
-INSTALL_DATA   = $(INSTALL) -m0644
-
-all:
-
-IMAGES  = xen.png orb_01.jpg orb_02.jpg
-IMAGES += left-end-highlight.jpg left-end-no-highlight.jpg
-IMAGES += right-end-highlight.jpg right-end-no-highlight.jpg
-IMAGES += middle-highlight.jpg middle-no-highlight.jpg
-IMAGES += seperator.jpg
-IMAGES += seperator-left-highlight.jpg seperator-right-highlight.jpg
-IMAGES += shutdown.png reboot.png pause.png unpause.png destroy.png
-IMAGES += small-destroy.png small-pause.png small-unpause.png
-IMAGES += next.png previous.png finish.png
-
-install:
-       # copy XenSV Main.rpy file
-       @[ -d $(DESTDIR)$(sv_insdir) ] || $(INSTALL_DIR) $(DESTDIR)$(sv_insdir)
-       @$(INSTALL_DATA) Main.rpy $(DESTDIR)$(sv_insdir)
-
-       # copy XenSV images
-       @[ -d $(DESTDIR)$(sv_insdir)/images ] || \
-               $(INSTALL_DIR) $(DESTDIR)$(sv_insdir)/images
-       @(cd images && $(INSTALL_DATA) $(IMAGES) $(DESTDIR)$(sv_insdir)/images)
-
-       # copy XenSV stylesheet
-       @[ -d $(DESTDIR)$(sv_insdir)/inc ] || \
-               $(INSTALL_DIR) $(DESTDIR)$(sv_insdir)/inc
-       @$(INSTALL_DATA) inc/style.css inc/script.js $(DESTDIR)$(sv_insdir)/inc
-
-clean:
-
diff --git a/tools/sv/images/destroy.png b/tools/sv/images/destroy.png
deleted file mode 100644 (file)
index 9545fc4..0000000
Binary files a/tools/sv/images/destroy.png and /dev/null differ
diff --git a/tools/sv/images/finish.png b/tools/sv/images/finish.png
deleted file mode 100644 (file)
index 6c5d18a..0000000
Binary files a/tools/sv/images/finish.png and /dev/null differ
diff --git a/tools/sv/images/left-end-highlight.jpg b/tools/sv/images/left-end-highlight.jpg
deleted file mode 100644 (file)
index 3922eb5..0000000
Binary files a/tools/sv/images/left-end-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/left-end-no-highlight.jpg b/tools/sv/images/left-end-no-highlight.jpg
deleted file mode 100644 (file)
index ded4e39..0000000
Binary files a/tools/sv/images/left-end-no-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/middle-highlight.jpg b/tools/sv/images/middle-highlight.jpg
deleted file mode 100644 (file)
index db9829d..0000000
Binary files a/tools/sv/images/middle-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/middle-no-highlight.jpg b/tools/sv/images/middle-no-highlight.jpg
deleted file mode 100644 (file)
index da3b4f6..0000000
Binary files a/tools/sv/images/middle-no-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/next.png b/tools/sv/images/next.png
deleted file mode 100644 (file)
index da10bbf..0000000
Binary files a/tools/sv/images/next.png and /dev/null differ
diff --git a/tools/sv/images/orb_01.jpg b/tools/sv/images/orb_01.jpg
deleted file mode 100755 (executable)
index e30efc4..0000000
Binary files a/tools/sv/images/orb_01.jpg and /dev/null differ
diff --git a/tools/sv/images/orb_02.jpg b/tools/sv/images/orb_02.jpg
deleted file mode 100755 (executable)
index e5ebc8e..0000000
Binary files a/tools/sv/images/orb_02.jpg and /dev/null differ
diff --git a/tools/sv/images/pause.png b/tools/sv/images/pause.png
deleted file mode 100644 (file)
index 6e16daa..0000000
Binary files a/tools/sv/images/pause.png and /dev/null differ
diff --git a/tools/sv/images/previous.png b/tools/sv/images/previous.png
deleted file mode 100644 (file)
index 22292d6..0000000
Binary files a/tools/sv/images/previous.png and /dev/null differ
diff --git a/tools/sv/images/reboot.png b/tools/sv/images/reboot.png
deleted file mode 100755 (executable)
index 358e6de..0000000
Binary files a/tools/sv/images/reboot.png and /dev/null differ
diff --git a/tools/sv/images/right-end-highlight.jpg b/tools/sv/images/right-end-highlight.jpg
deleted file mode 100644 (file)
index 1ffee34..0000000
Binary files a/tools/sv/images/right-end-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/right-end-no-highlight.jpg b/tools/sv/images/right-end-no-highlight.jpg
deleted file mode 100644 (file)
index 0ddd058..0000000
Binary files a/tools/sv/images/right-end-no-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/seperator-left-highlight.jpg b/tools/sv/images/seperator-left-highlight.jpg
deleted file mode 100644 (file)
index c90f4ff..0000000
Binary files a/tools/sv/images/seperator-left-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/seperator-right-highlight.jpg b/tools/sv/images/seperator-right-highlight.jpg
deleted file mode 100644 (file)
index f37e6cd..0000000
Binary files a/tools/sv/images/seperator-right-highlight.jpg and /dev/null differ
diff --git a/tools/sv/images/seperator.jpg b/tools/sv/images/seperator.jpg
deleted file mode 100644 (file)
index c77e2c5..0000000
Binary files a/tools/sv/images/seperator.jpg and /dev/null differ
diff --git a/tools/sv/images/shutdown.png b/tools/sv/images/shutdown.png
deleted file mode 100755 (executable)
index 48a52dc..0000000
Binary files a/tools/sv/images/shutdown.png and /dev/null differ
diff --git a/tools/sv/images/small-destroy.png b/tools/sv/images/small-destroy.png
deleted file mode 100644 (file)
index f800bd7..0000000
Binary files a/tools/sv/images/small-destroy.png and /dev/null differ
diff --git a/tools/sv/images/small-pause.png b/tools/sv/images/small-pause.png
deleted file mode 100644 (file)
index 7bbdbfa..0000000
Binary files a/tools/sv/images/small-pause.png and /dev/null differ
diff --git a/tools/sv/images/small-unpause.png b/tools/sv/images/small-unpause.png
deleted file mode 100644 (file)
index 6ae5687..0000000
Binary files a/tools/sv/images/small-unpause.png and /dev/null differ
diff --git a/tools/sv/images/unpause.png b/tools/sv/images/unpause.png
deleted file mode 100644 (file)
index c971308..0000000
Binary files a/tools/sv/images/unpause.png and /dev/null differ
diff --git a/tools/sv/images/xen.png b/tools/sv/images/xen.png
deleted file mode 100644 (file)
index 344c361..0000000
Binary files a/tools/sv/images/xen.png and /dev/null differ
diff --git a/tools/sv/inc/script.js b/tools/sv/inc/script.js
deleted file mode 100755 (executable)
index 47cd103..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-function update( objRef, text )
-{
-    if ( document.all || document.getElementById )
-    {
-        obj = ( document.getElementById )? document.getElementById( objRef ) : document.all( objRef );
-
-        obj.innerHTML= text
-    }
-}
-
-function doOp( op )
-{
-    document.forms[0].op.value = op
-    document.forms[0].submit()
-}
-
-function doOp2( op, args )
-{
-    document.forms[0].op.value = op
-    document.forms[0].args.value = args
-    document.forms[0].submit()
-}
diff --git a/tools/sv/inc/style.css b/tools/sv/inc/style.css
deleted file mode 100644 (file)
index 263ab59..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-
-P       {font-family: verdana, arial; font-size: 12px; color: black}
-.small  {font-size: 10px}
-
-TD.domainInfo     {font-family: verdana, arial; font-size: 10px; color: black}
-TD.domainInfoHead {font-family: verdana, arial; font-size: 10px; color: white; font-face: bold}
-
-TD.domainInfoHead {background-color: black}
-TR.domainInfoOdd  {background-color: white}
-TR.domainInfoEven {background-color: lightgrey}
-
-body { 
-       width: 670px;
-       margin: 0px;
-       padding: 0px;
-       background-color: #fff;
-       background-image: url(../images/orb_02.jpg);
-       background-repeat: repeat-y;
-       background-position: left top;
-       font-family: Arial, Helvetica, sans-serif;
-       font-weight: bold;
-       color: #333333;
-       letter-spacing: 0px;
-       scrollbar-base-color: #333333;
-       scrollbar-track-color: #666666;
-       scrollbar-face-color: #fff;
-       
-       
-       }
-        
-.button (cursor:hand)
-